package com.ebupt.migu.music.userGroup.service;

import com.ebupt.migu.music.common.entity.ResultObject;
import com.ebupt.migu.music.system.entity.SysUser;
import com.ebupt.migu.music.userGroup.entity.UserGroupInfo;
import com.ebupt.migu.music.userGroup.entity.dto.UserGroupDTO;
import com.ebupt.migu.music.userGroup.entity.vo.UserGroupVo;

import java.util.List;
import java.util.Map;

/**
 * Created by Intellij IDEA.
 * User:  liuyangyang@cd.ebupt.com
 * Date:  2019/9/13
 */
public interface CrowdListService {

    /**
     * 手动更新人群
     *
     * @param params
     * @return
     */
    ResultObject refreshCrowd(Map<String, Object> params);

    /**
     * 更新人群信息
     *
     * @param params
     * @return
     */
    ResultObject updateCrowd(Map<String, Object> params);

    /**
     * 删除人群
     *
     * @param params
     * @return
     */
    ResultObject deleteCrowd(Map<String, Object> params);

    /**
     * 创建人群列表
     *
     * @param params
     * @return
     */
    ResultObject addCrowd(Map<String, Object> params);

    /**
     * 查询人群列表
     *
     * @param params
     * @return
     */
    ResultObject crowdList(Map<String, Object> params, SysUser user);

    /**
     * 【创建策略专供】
     * 查询人群列表
     *
     * @param params
     * @return
     */
    ResultObject liteList(Map<String, Object> params, SysUser user);

    /**
     * 删除人群
     *
     * @param params
     * @return
     */
    ResultObject deleteORupdate(Map<String, Object> params);

    /**
     * 通过人群名称查询人群详情
     *
     * @param params
     * @return
     */
    ResultObject queryGroupDetailByName(Map<String, Object> params);

    /**
     * 分页、查询人群列表
     *
     * @param params 请求参数
     * @return 查询结果
     */
    ResultObject<List<Map<String, Object>>> queryUserGroup(Map<String, Object> params);

    /**
     * 查询手机号有效的服务云侧创建人群
     *
     * @return 人群结果
     */
    ResultObject<List<UserGroupInfo>> queryUserGroupForInsight();

    /**
     * 将redis中的人群信息写入到本地文件中
     *
     * @param groupId 人群id
     * @return 操作结果
     */
    ResultObject<String> downloadUserGroup(String groupId);

    /**
     * 重置客群洞察次数
     */
    void resetInsightTimes();

    ResultObject<List<UserGroupVo>> queryUserGroupList(UserGroupDTO userGroupDTO, SysUser user);
}
